package main

import (
	"fmt"
	"io"
	"log"
	"net/http"
	"os"
	"strings"
)

//作业
//编写一个 HTTP 服务器，大家视个人不同情况决定完成到哪个环节，但尽量把 1 都做完。
//
//接收客户端 request，并将 request 中带的 header 写入 response header
//读取当前系统的环境变量中的 VERSION 配置，并写入 response header
//Server 端记录访问日志包括客户端 IP，HTTP 返回码，输出到 server 端的标准输出
//当访问 localhost/healthz 时，应返回 200

func main() {
	fmt.Println("Starting http server...")
	http.HandleFunc("/", rootHandler)
	http.HandleFunc("/healthz", healthzHandler)

	err := http.ListenAndServe(":8011", nil)

	//mux := http.NewServeMux()
	//mux.HandleFunc("/", rootHandler)
	//mux.HandleFunc("/healthz", healthzHandler)

	if err != nil {
		log.Fatal(err)
	}
}

func rootHandler(w http.ResponseWriter, request *http.Request) {
	log.Println("ip地址", request.RemoteAddr)

	apiVersion := os.Getenv("version")
	w.Header().Set("api-version", apiVersion)
	for k, v := range request.Header {
		w.Header().Set(k, strings.Join(v, ""))
	}

	io.WriteString(w, "hello [stranger]\n")
}

func healthzHandler(w http.ResponseWriter, request *http.Request) {
	w.WriteHeader(200)
}
